import request from '../request-axios.js';
import { API_CONFIG } from '../config.js';

// 文件管理API
export const fileAPI = {
  // 获取文件列表
  getFileList: (params = {}) => {
    return request.get(API_CONFIG.ENDPOINTS.FILE_LIST, { params });
  },

  // 上传文件
  uploadFile: (formData) => {
    return request.upload(API_CONFIG.ENDPOINTS.FILE_UPLOAD, formData);
  },

  // 下载文件
  downloadFile: (fileId, filename) => {
    return request.download(`${API_CONFIG.ENDPOINTS.FILE_DOWNLOAD}/${fileId}`, {}, filename);
  },

  // 下载多个文件的压缩包 - 在请求体中传递filePaths参数
  downloadCompressionPackageFile: (requestBody) => {
    return request.post(API_CONFIG.ENDPOINTS.PATH_PACKAGING_COMPRESSION_DOWNLOAD, requestBody);
  },

  // 删除文件（支持单个ID或ID数组）
  deleteFile: (fileIdOrIds) => {
    // 统一处理单个ID和ID数组
    let idsParam;
    if (Array.isArray(fileIdOrIds)) {
      // 批量删除：数组转换为逗号拼接字符串
      idsParam = fileIdOrIds.join(',');
      return request.post(`${API_CONFIG.ENDPOINTS.FILE_LIST}/batch-delete`, null, { params: { fileIds: idsParam } });
    } else {
      // 单个删除：使用DELETE方法
      return request.delete(`${API_CONFIG.ENDPOINTS.FILE_LIST}/${fileIdOrIds}`);
    }
  },

  // 批量删除文件（兼容性方法，实际调用deleteFile）
  batchDeleteFiles: (fileIds) => {
    return fileAPI.deleteFile(fileIds);
  },

  // 获取文件详情
  getFileDetail: (fileId) => {
    return request.get(`${API_CONFIG.ENDPOINTS.FILE_LIST}/${fileId}`);
  },

  // 重命名文件
  renameFile: (fileId, newName) => {
    return request.put(`${API_CONFIG.ENDPOINTS.FILE_LIST}/${fileId}/rename`, null, { params: { newName } });
  },

  // 移动文件
  moveFile: (fileId, targetPath) => {
    return request.put(`${API_CONFIG.ENDPOINTS.FILE_LIST}/${fileId}/move`, null, { params: { targetPath } });
  },

  // 复制文件
  copyFile: (fileId, targetPath) => {
    return request.post(`${API_CONFIG.ENDPOINTS.FILE_LIST}/${fileId}/copy`, null, { params: { targetPath } });
  },

  // 获取文件预览
  getFilePreview: (fileId) => {
    return request.get(`${API_CONFIG.ENDPOINTS.FILE_LIST}/${fileId}/preview`);
  },

  // 获取文件统计信息
  getFileStats: () => {
    return request.get(`${API_CONFIG.ENDPOINTS.FILE_LIST}/stats`);
  },

  // 搜索文件
  searchFiles: (keyword, params = {}) => {
    return request.get(`${API_CONFIG.ENDPOINTS.FILE_LIST}/search`, { 
      params: {
        keyword,
        ...params
      }
    });
  }
};

export default fileAPI;